﻿//////////////////////////////////////////////////////////////////
//                    Class remove_borders                      //
//               deze klasse haalt de witte randen              //
//                  rondom de tekens weg.                       //
//                                                              //
//                          Made By:                            //
//                      Hessel Meulenbeld                       //
//                                                              //
//                          Version:                            //
//               1.0 - Hessel Meulenbeld - 09-03-2012           //
//               1.1 - Hessel Meulenbeld - 16-03-2012           //
//                     - Nieuwe manier geïmplementeerd          //
//                       van randen verwijderen                 //
//                                                              //
//                                                              //
//                                                              //
//////////////////////////////////////////////////////////////////
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using THO7AlgorithmBase;

namespace THO7AlgoritmTimerApplication {
    class remove_borders : VisionAlgorithm {
        public remove_borders(String name) : base(name) { }
        public override Bitmap DoAlgorithm(Bitmap sourceImage) {
            //zet de nieuwe coördinaten op de uiterste punten van de afbeelding.
            int x1 = sourceImage.Width;
            int y1 = sourceImage.Height;
            int x2 = 0;
            int y2 = 0;
            //loop de afbeelding door en zoek de uitersten van het teken.
            for (int x = 0; x < sourceImage.Width; x++) {
                for (int y = 0; y < sourceImage.Height; y++) {
                    Color c = sourceImage.GetPixel(x, y);
                    if (c.R < 10 && c.G < 10 && c.B < 10) {
                        if (y < y1) {
                            y1 = y;
                        }if (y > y2) {
                            y2 = y;
                        }if (x < x1) {
                            x1 = x;
                        }if (x > x2) {
                            x2 = x;
                        }
                    }
                }
            }
            // gebruik de uitersten van het teken om een nieuwe bitmap te maken die alleen
            // dat deel van de sourceImage pakt dat tussen die uitersten ligt.
            Bitmap dest = sourceImage.Clone(new Rectangle(x1, y1, (x2 - x1), y2 - y1), sourceImage.PixelFormat);
            return dest;
        }
    }
}
